package com.qn.util;

import cn.hutool.extra.spring.SpringUtil;
import com.qn.common.code.ErrorCode;
import com.qn.config.DynamicMessageSource;
import org.springframework.context.MessageSource;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;

/**
 * 获取i18n资源文件
 *
 * @author QN
 * @date 2024/12/31
 */
@Component
public class MessageUtils {

    private static final MessageSource MESSAGE_SOURCE = SpringUtil.getBean(DynamicMessageSource.class);

    /**
     * 根据消息键和参数 获取消息 委托给spring messageSource
     *
     * @param code           消息键
     * @param args           参数
     * @param defaultMessage 默认消息
     * @return 获取国际化翻译值
     */
    public static String message(Integer code, Object[] args, String defaultMessage) {
        try {
            return MESSAGE_SOURCE.getMessage(String.valueOf(code), args, LocaleContextHolder.getLocale());
        } catch (NoSuchMessageException e) {
            return defaultMessage;
        }
    }

    /**
     * 根据错误代码获取消息
     *
     * @param errorCode 错误代码
     * @return 获取国际化翻译值
     */
    public static String message(ErrorCode errorCode) {
        return message(errorCode.getCode(), null, errorCode.getMsg());
    }

}

